package cs.study.base.conn011;

/**
 * 懒汉单例模式 线程安全
 * 类级内部类实现
 *
 * 简单地看看类级内部类相关的知识
 * a.什么是类级内部类？简单点说，类级内部类指的是，有static修饰的成员内部类。如果没有static修饰的成员内部类被称为对象级内部类。
 * b.类级内部类相当于其外部类的static成分，他的对象，与外部类对象间不存在依赖关系，因此可以直接创建。而对象级内部类的实例，是绑定在外部对象实例中的。
 * c.类级内部类中，可以定义静态的方法。在静态方法中只能够引用外部类中的静态成员方法或者成员变量。
 * d.类级内部类相当于其外部类的成员，只有在第一次被使用时才会被装载。
 * 再来看看多线程缺省同步锁的知识
 * 大家都知道，在多线程开发中，为了解决并发问题，主要是通过使用 synchronized来加互斥锁进行同步控制。但是在某些情况中，JVM已经隐含地为您执行了同步，这些情况下就不用自己来进行同步控制了。这些情况包括：
 * a.有静态初始化器（在静态字段上或 static{} 快中的初始化器）初始化数据时
 * b.访问final字段时
 * c.在创建线程之前创建对象是
 * d.线程可以看见它将要处理的对象时
 */
public class InnerSingleton {

	// 私有化构造函数
	private InnerSingleton() {}
	
	private static class Singletion {
		private static Singletion single = new Singletion();
	}
	
	public static Singletion getInstance(){
		return Singletion.single;
	}
	
}
